<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"
    />
    <title>初入路由器刷机 | zzqhost</title>
    <meta name="description" content="天行健，君子以自强不息；地势坤，君子以厚德载物" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="初入路由器刷机 | zzqhost" />
    <meta property="og:site_name" content="初入路由器刷机 | zzqhost" />
    <meta property="og:locale" content="zh-CN" />
    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="初入路由器刷机 | zzqhost" />
    <link rel="shortcut icon" href="/favicon.ico">
    
    <link rel="preload" href="/assets/css/0.styles.948dbb0a.css" as="style"><link rel="preload" href="/assets/js/app.3e01f5cb.js" as="script"><link rel="preload" href="/assets/js/1.21aaee9f.js" as="script"><link rel="preload" href="/assets/js/14.98a4de9c.js" as="script"><link rel="preload" href="/assets/js/5.352c1a43.js" as="script"><link rel="preload" href="/assets/js/7.4a8a313c.js" as="script"><link rel="preload" href="/assets/js/9.5ce2172b.js" as="script"><link rel="preload" href="/assets/js/6.8b8fad13.js" as="script"><link rel="preload" href="/assets/js/36.37013d97.js" as="script"><link rel="preload" href="/assets/js/13.186562af.js" as="script"><link rel="preload" href="/assets/js/15.740f4afc.js" as="script"><link rel="prefetch" href="/assets/js/10.e3f309c4.js"><link rel="prefetch" href="/assets/js/11.7bef5ef0.js"><link rel="prefetch" href="/assets/js/12.cf546b2f.js"><link rel="prefetch" href="/assets/js/16.c0f3e779.js"><link rel="prefetch" href="/assets/js/17.ee3f21b3.js"><link rel="prefetch" href="/assets/js/18.2c35035c.js"><link rel="prefetch" href="/assets/js/19.e4881cfc.js"><link rel="prefetch" href="/assets/js/20.95040517.js"><link rel="prefetch" href="/assets/js/21.cdbb212e.js"><link rel="prefetch" href="/assets/js/22.7d278bc3.js"><link rel="prefetch" href="/assets/js/23.1e2b813e.js"><link rel="prefetch" href="/assets/js/24.6cc55189.js"><link rel="prefetch" href="/assets/js/25.ea35ed40.js"><link rel="prefetch" href="/assets/js/26.2b97bfde.js"><link rel="prefetch" href="/assets/js/27.d323aa74.js"><link rel="prefetch" href="/assets/js/28.30416d07.js"><link rel="prefetch" href="/assets/js/29.02b97357.js"><link rel="prefetch" href="/assets/js/30.95aedede.js"><link rel="prefetch" href="/assets/js/31.79b824fd.js"><link rel="prefetch" href="/assets/js/32.d0cd6341.js"><link rel="prefetch" href="/assets/js/33.14c3c5b9.js"><link rel="prefetch" href="/assets/js/34.ac56f38e.js"><link rel="prefetch" href="/assets/js/35.54820345.js"><link rel="prefetch" href="/assets/js/37.38353206.js"><link rel="prefetch" href="/assets/js/38.36296a20.js"><link rel="prefetch" href="/assets/js/39.37df68d6.js"><link rel="prefetch" href="/assets/js/4.54d65165.js"><link rel="prefetch" href="/assets/js/40.ffbd7a88.js"><link rel="prefetch" href="/assets/js/41.5db561d2.js"><link rel="prefetch" href="/assets/js/42.d876627b.js"><link rel="prefetch" href="/assets/js/43.e5008459.js"><link rel="prefetch" href="/assets/js/44.a24dc4a2.js"><link rel="prefetch" href="/assets/js/45.f696c4e1.js"><link rel="prefetch" href="/assets/js/8.8c0e5954.js"><link rel="prefetch" href="/assets/js/vendors~search.c4563fd1.js">
    <link rel="stylesheet" href="/assets/css/0.styles.948dbb0a.css">
  </head>
  <body>
    <div id="loader-wrapper" style="display: none;opacity:0">
      <div id="loader"></div>
      <div class="loader-section section-left"></div>
      <div class="loader-section section-right"></div>
    </div>
    <div id="app" data-server-rendered="true"><div style="height:100%;" data-v-80d5f2bc><section class="el-container main-container" data-v-80d5f2bc><aside class="el-aside menu" style="width:auto;" data-v-67e96130 data-v-80d5f2bc><ul role="menubar" class="menu-wrap el-menu" style="background-color:;" data-v-67e96130><li data-v-67e96130><div class="brand-wrap" style="background-image:url(/brand.jpg);" data-v-67e96130><div class="brand" data-v-67e96130><a href="/" class="avatar waves-effect waves-circle waves-light router-link-active" data-v-67e96130><img src="/avatar.jpg" data-v-67e96130></a> <hgroup class="introduce" data-v-67e96130><div class="nickname" data-v-67e96130>zzqhost</div> <a title="zzqhost@163.com" class="mail" data-v-67e96130>zzqhost@163.com</a></hgroup></div></div></li> <li role="menuitem" tabindex="-1" class="el-menu-item" style="padding-left:20px;color:;background-color:;" data-v-67e96130><i class="iconfont icon-home" data-v-67e96130></i> <span class="item-title" data-v-67e96130>主页</span></li> <li role="menuitem" tabindex="-1" class="el-menu-item" style="padding-left:20px;color:;background-color:;" data-v-67e96130><i class="iconfont icon-biaoqian" data-v-67e96130></i> <span class="item-title" data-v-67e96130>标签分类</span></li> <li role="menuitem" tabindex="-1" class="el-menu-item" style="padding-left:20px;color:;background-color:;" data-v-67e96130><i class="iconfont icon-wenzhang" data-v-67e96130></i> <span class="item-title" data-v-67e96130>时间归档</span></li> <!----> <li role="menuitem" tabindex="-1" class="el-menu-item" style="padding-left:20px;color:;background-color:;" data-v-67e96130><i class="iconfont icon-aboutme" data-v-67e96130></i> <span class="item-title" data-v-67e96130>自我介绍</span></li></ul></aside> <section class="el-container container-warp" data-v-80d5f2bc><header id="topHeader" class="el-header top-header" style="height:60px;padding-left:260px;" data-v-1a942948 data-v-80d5f2bc><div class="header-warp el-row is-align-middle el-row--flex" data-v-1a942948><div class="el-col el-col-12 el-col-xs-7" data-v-1a942948><div class="el-row is-align-middle el-row--flex" data-v-1a942948><div class="el-col el-col-2" data-v-1a942948><button type="button" class="el-button el-button--primary is-circle" data-v-1a942948><!----><!----><span><i class="iconfont icon-caidan" data-v-1a942948></i></span></button></div></div></div> <div class="el-col el-col-20 el-col-xs-24" data-v-1a942948><div class="grid-content bg-purple-light" data-v-1a942948><div class="el-row is-justify-end is-align-middle el-row--flex" data-v-1a942948><div class="el-col el-col-13 el-col-xs-24 el-col-sm-21 el-col-md-17 el-col-lg-13" data-v-1a942948><div aria-haspopup="listbox" role="combobox" aria-owns="el-autocomplete-1839" class="el-autocomplete search-input" data-v-1a942948><div class="el-input el-input--small el-input--suffix"><!----><input type="text" autocomplete="off" valueKey="value" popperClass="search-popper" placeholder="搜搜看" fetchSuggestions="function () { [native code] }" debounce="300" placement="bottom-start" popperAppendToBody="true" value="" class="el-input__inner"><!----><span class="el-input__suffix"><span class="el-input__suffix-inner"><i class="el-input__icon el-icon-search search-ico" data-v-1a942948></i><!----></span><!----></span><!----></div><div role="region" class="el-autocomplete-suggestion el-popper search-popper" style="width:;display:none;"><div class="el-scrollbar"><div class="el-autocomplete-suggestion__wrap el-scrollbar__wrap el-scrollbar__wrap--hidden-default"><ul class="el-scrollbar__view el-autocomplete-suggestion__list"></ul></div><div class="el-scrollbar__bar is-horizontal"><div class="el-scrollbar__thumb" style="width:0;transform:translateX(0%);ms-transform:translateX(0%);webkit-transform:translateX(0%);"></div></div><div class="el-scrollbar__bar is-vertical"><div class="el-scrollbar__thumb" style="height:0;transform:translateY(0%);ms-transform:translateY(0%);webkit-transform:translateY(0%);"></div></div></div></div></div></div></div></div></div></div></header> <main class="el-main my-main" style="margin-left:240px;" data-v-105de776 data-v-80d5f2bc><div class="content-header index-header" data-v-60d87e45 data-v-105de776><div class="container fade-scale in" data-v-60d87e45><h1 id="conentHeader" class="title" data-v-60d87e45>初入路由器刷机</h1> <h5 class="subtitle" data-v-60d87e45>最后更新时间：2019-07-04 18:08:36</h5></div></div> <div data-v-95d4b5b2 data-v-105de776 data-v-105de776><div class="post-content el-row is-justify-center el-row--flex" data-v-95d4b5b2><div id="post-card" class="post-card post-sign el-col el-col-16 el-col-xs-24 el-col-sm-23 el-col-md-23 el-col-lg-16" data-v-95d4b5b2><div class="content__default" data-v-95d4b5b2><p>目前路由器折腾刷机，除了采用各品牌的原厂固件外，第三方路由器固件，基本就是：Tomato、DD-WRT、OpenWRT三种。
当然还有其他一些更加小众的版本, 和很多从这三大固件衍生出来的修改版固件。我的这篇文章, 可以让大家对这些知识有一个相对比较全面的理解, 使你更容易入门一些.
</p> <h1 id="分类"><a href="#分类" aria-hidden="true" class="header-anchor">#</a> 分类</h1> <ul><li><strong>固件分类</strong> 第三方路由器固件，基本就是：Tomato、DD-WRT、OpenWRT三种.</li> <li><strong>前端和后端</strong> 基本上所有第三方路由器固件的架构上可分为前端（Frontend）和后端（Backend），后端一般情况下是一个不带界面的Linux系统, 前端一般指图形用户接口，即GUI，主要体现为Web管理界面。 比较流行的OpenWRT自身默认编译出来是不带前端的。</li> <li><strong>OpenWRT的在国内常见的前端有</strong> <ul><li>LuCI：基于Apache License，现在主流，是自行编译的OpenWRT最佳搭配；</li> <li>X-WRT：基于GPL，不太活跃，不太流行，好像没怎么更新了；</li> <li>Gargoyle：基于GPL，提供完整的全套路由功能，流量监控强悍，带宽管理和QoS很是强大，不比Tomato逊色，如果不想自己动 手编译或设置，但是又想要用版权规范的OpenWRT，且想一步到位的话，Gargoyle是最好的选择，很适合追求稳定的普通用户或小微企业用户，默认 界面风格传统，但有时尚风格的主题可更换，不支持多国语言，国内不流行，但已有汉化的补丁出现了；</li></ul></li> <li><strong>其它两大固件的前端</strong> <ul><li>Tomato前端部分：私有，非GPL（有源码供自编译，不能随便修改），版权模糊，有免费版，但也有很多付费增强功能的版本，界面简约，运行稳定，QoS很强大，机型的支持比较少；</li> <li>DD-WRT前端部分：版权模糊，部分私有，非GPL（有提供源码，不能随便修改），有免费版，也有增强功能的付费版，界面美观，中继能力强大，支持语言众多，对机型的支持最广泛，但免费版QoS性能一般；</li></ul></li> <li><strong>Tomato DualWAN</strong> <ul><li>Tomato DualWAN 使那些能刷Tomato或DD-WRT固件的路由器由原来的单WAN口变成双WAN口，而这一切不需要在路由器上增加任何硬件，只需要刷一下 Tomato DualWAN 固件就可以。刷了Tomato DualWAN之后转变出来的第二个WAN口可以接有线网络也可以接无线网络，双WAN模式支持带宽合并或智能路由。</li> <li>DualWan前端部分：私有，非GPL（有源码供自编译，不能随便修改源码），版权模糊，有免费版，也有增强功能的付费版，基于Tomato前端部分的衍生，算是中文Tomato的典型代表，多拨功能强大，对机型的支持比较少；</li></ul></li></ul> <h1 id="三大固件的介绍和对比"><a href="#三大固件的介绍和对比" aria-hidden="true" class="header-anchor">#</a> 三大固件的介绍和对比</h1> <ul><li><strong>DDWRT</strong> : 界面美观,设置简单直观,易用性比较好,官方固件自带的功能是三大固件中最为丰富的,对新路由的支持也十分迅速,可支持迅速的同时,由于新代码的加入,导致 DDWRT经常出现一些bug,一些可能之前已经解决的bug,往往又会在之后的某次更新中原地满状态复活 ,着实让人喷血,最让人呕病的,是孱弱的QOS功能,DDWRT的qos功能只能说聊胜于无吧.功能的话到时还挺多,PPTP openvpn qos 上网控制 mac过滤等等功能都很使用,还能调节官方版本一般不提供的无线信号功率,当然还有中继,说中继可能有些人不敏感,说CW,很多人估计会会心一笑。DDWRT绝对是最适合新手入手的第三方固件,功能丰富,大部分机子的reset都是有效的,路由设置变砖后轻抚菊花即可涅磐重生 ,所以可以放心折腾~</li> <li><strong>Tomato</strong> : 界面尚可,设置也算简单,易用性还行,流量的统计查看等功能是三个固件中做的最好的.官版Tomato是所有第三方路由固件中最为稳定的, 它的稳定源自于它的保守,官方版本的Tomato好几个版本之前就已经没有再加入什么新功能.  在这里我要补充几句,泰迪熊TT也好,国内的DWTT也好,这些都不是官方Tomato,只是根据官方原版Tomato进行修改和功能扩充的MOD版本</li> <li><strong>OpenWRT</strong> : Openwrt是三大固件中扩展性最好的固件,通过扩展,可以实现很多超过路由本职工作的事情,比如脱机下载,网站,论坛,qos功能也十分强大,不逊 色于Tomato的QOS,设置得当后网络表现会让人偷着乐~而且openwrt对新路由的支持也是十分迅速,个人认为是最有前途的固件,因为可以在新路由强劲CPU的支持下获得很好的性能表现,比那些老古董和洋垃圾的性能强大太多.各种功能的软件扩展包比比皆是,而且还有飞翔的天空开发的nwan多 wan和限速qos。</li> <li>总结
<ul><li>如果想玩路由的话，推荐从DD-WRT入手最方便；</li> <li>过后若想用折腾QoS，就用Tomato</li> <li>要多拨用DualWan；</li> <li>注重版权意识又想功能丰富的就自编译OpenWRT去集成LuCI等各种组件——自由自主，功能强大，应有尽有，这或许是很多路由器玩家的最终选择。</li></ul></li></ul> <h1 id="openwrt的来历"><a href="#openwrt的来历" aria-hidden="true" class="header-anchor">#</a> OpenWrt的来历</h1> <h2 id="来历"><a href="#来历" aria-hidden="true" class="header-anchor">#</a> 来历</h2> <ul><li>Cisco/Linksys 在2003 年发行的WRT54G这款无线路由器非常“经典”。</li> <li>同年有好事者在 Linux Kernel Mailing List 搜索 WRT54G，发现它的IOS 是基于Linux，然而Linux 基于GPL 发布许可证，就是 GNU General Public License. 该许可证规定Cisco 应该把WRT54G 的IOS 的源代码公开。</li> <li>本来Cisco 拒绝公开源代码，最后，03年三月份的时候，基于公众压力Linksys 公开了WRT54G 的源代码。</li> <li>故事本来到这里就结束了，然而相反，结果越闹越大：
<ul><li>有了源代码以后，开发者便清楚知道代码如何控制路由器的硬件，并且掌握了一些通过增加新的代码到原有的IOS 当中去 —— 使得硬件支持更多的Feature 的技术。这些开发者组成了一个项目开发团队，不断对原来的IOS 进行更新，编码，加入新的特性…… 现在他们手上的WRT54G 无线路由器的能力已经大大超过了原来Cisco 设计的地摊货的设计思路。不但如此，随着这两年互联网Web2.0 技术的发展，不同的开发团队之间找到了更好的协同工作平台，其规模不亚于TAC. 他们最近建立了一个DD-WRT 项目的Wiki 站点将全套文档以及代码公开发布。使用DD-WRT 项目提供的源代码，重新升级WRT54G 以后你就能够获得一台相当于$600 左右的中端无线路由器了。</li> <li>当Linksys 释放 WRT54G/GS 的源码后，网上出现了很多不同版本的 Firmware 去增强原有的功能。大多数的 Firmware 都是99%使用 Linksys的源码，只有1%是加上去的，每一种 Firmware 都是针对特定的市场而设计，这样做有2个缺点，第一个是难以集合各版本Firmware的长处，第二个是这版本距离 Linux 正式发行版越来越远。</li> <li>OpenWrt 选择了另一条路，它从零开始，一点一点的把各软件加入去，使其接近 Linksys 版 Firmware的功能，而OpenWrt 的成功之处是它的文件系统是可写的，开发者无需在每一次修改后重新编译，另它更像一个小型的 Linux 电脑系统，也加快了开发速度。</li></ul></li></ul> <h2 id="简化总结"><a href="#简化总结" aria-hidden="true" class="header-anchor">#</a> 简化总结</h2> <ul><li>从前有个路由器公司，突然有一天想在Linux基础上开发固件，结果后来被捅出来了，于是要求他们公开源代码，于是他们就被迫公开了。</li> <li>于是大家很兴奋，做了很多修改版出来～</li> <li>有一个团队基于上述开源的代码从零开始加入各种软件, 结果一不小心做成了此行业的狡狡者, 他们给自己的产品起名叫OpenWrt</li></ul> <h1 id="openwrt的衍生版本-pandorabox"><a href="#openwrt的衍生版本-pandorabox" aria-hidden="true" class="header-anchor">#</a> OpenWrt的衍生版本-PandoraBox</h1> <ul><li>PandoraBox是OpenWrt的一条分支，前身是DreamBox，由OpenWrt中国创始人之一的Lintel所带领的技术团队维护。</li> <li>PandoraBox是基于OpenWrt深度定制的路由器系统，系统底层部分采用了原厂原生驱动，而非开源驱动，使其相比OpenWrt有更好的稳定性。由于OpenWrt配置及二次开发的方便性，加上Lintel根据中国网络环境对PandoraBox作出的调整及优化，受到不少互联网大咖的关注（听说还有橄榄枝）。</li> <li>在中国深圳，不少公司厂家推出的“基于OpenWrt深度定制的系统”，使用的是当时开源的DreamBox源码或者泄漏的早期PandoraBox源码。</li></ul> <h1 id="openwrt介绍"><a href="#openwrt介绍" aria-hidden="true" class="header-anchor">#</a> OpenWrt介绍</h1> <p>OpenWrt社区聚集了一大批纯正的Linux各个方向的死忠级专家,从而使OpenWrt具备了如下与传统NorFlash嵌入式Linux截然不同的高级特征：</p> <h2 id="squashfs与jffs2文件系统的整合形成的overlayfs机制"><a href="#squashfs与jffs2文件系统的整合形成的overlayfs机制" aria-hidden="true" class="header-anchor">#</a> <strong>SquashFS与JFFS2文件系统的整合形成的overlayfs机制</strong></h2> <p>对用户而言,OpenWrt的整个文件系统是完全动态可读写的,而其中的固件部分是用SquashFS实施的只读压缩文件系统,而用户所有的对文件系统的增删改都是用类似“差值”的形态存储在JFFS2文件系统中的,二者用overlayfs机制黏合,对用户完全透明。因此我们可以在文件系统中肆意发挥、随便折腾,出现任何问题则可像手机一样恢复出厂设置,并提供fail-safe模式帮助用户修复系统。</p> <p>而在传统的嵌入式Linux里,固件是静态的,对系统做任何一点与可运行程序相关的变动,比如增加一个模块,删除一个应用程序,都要重新编译全部固件,并重新刷写,就好比你一个Android手机要升级微信就要重新刷机。这种反人类的传统文件系统完全阻挡了非专业爱好者进入嵌入式Linux这一领域。</p> <h2 id="uci（unified-configuration-interface）"><a href="#uci（unified-configuration-interface）" aria-hidden="true" class="header-anchor">#</a> <strong>UCI（Unified Configuration Interface）</strong></h2> <p>帮助用户在任何平台的OpenWrt上用同样的方法配置系统、网络和应用。在Boardcom的平台上,在Atheros的平台上,甚至x86的平台上,修改系统配置均为同样的命令。而UCI的机制并不是二进制硬件虚拟层实现的,是由Linux shell脚本实现的。这毫无疑问是一种别致的创新,比Android来的轻巧得多。OpenWrt里的Linux shell脚本用得很帅很高端,那种感觉怎么形容呢？就好像精通十八般武艺的高手有一天特别复古地拿起铅笔刀在硬盘上刻出来了系统,就是这种感觉。</p> <h2 id="opkg包管理系统与丰富的软件源"><a href="#opkg包管理系统与丰富的软件源" aria-hidden="true" class="header-anchor">#</a> <strong>Opkg包管理系统与丰富的软件源</strong></h2> <p>是一个与桌面级Linux使用的apt-get、yum等同级别的包管理系统,使用形如：opkg install xxxx-app的命令从互联网软件源中安装大约3000余种各种软件。3000款软件,数量没法跟手机的应用市场比,但是要知道,这里头的任何一个软件都来头不小,是经过Linux社区千锤百炼的东西,一个应用折腾一个月都玩不够。类型覆盖网络、音频、视频、编程开发、Linux系统管理等。当然,如果是专业比较偏的东西OpenWrt的软件源里还是不够完善,比如笔者团队用到的OpenCV的东西,源里就没有,就靠自己交叉编译了。</p> <h2 id="luci-web界面系统"><a href="#luci-web界面系统" aria-hidden="true" class="header-anchor">#</a> <strong>Luci WEB界面系统</strong></h2> <p>除CLI命令行终端界面外,不同于桌面级Linux使用屏幕GUI作为交互界面,OpenWrt使用WEB界面交互。而不同于传统路由器web管理界面的是,luci是用户可订制的,安装了支持luci的软件后,WEB界面系统就中出现了新的模块,而opkg本身也web化了。这个特征让用户感觉很像手机的app store。</p> <h1 id="参考"><a href="#参考" aria-hidden="true" class="header-anchor">#</a> 参考</h1> <ul><li><a href="https://www.cnblogs.com/qiri07/articles/3664261.html" target="_blank" rel="noopener noreferrer">路由器刷机常见第三方固件及管理前端种类(OpenWrt、Tomato、DD-Wrt)<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="http://blog.sina.com.cn/s/blog_636a55070101wssh.html" target="_blank" rel="noopener noreferrer">主流路由器固件dd-wrt,tomato,openwrt对比介绍<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://www.zhihu.com/question/33277589" target="_blank" rel="noopener noreferrer">pandorabox、openwrt、ddwrt是什么关系？<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="http://xjf975999.iteye.com/blog/2173202" target="_blank" rel="noopener noreferrer">OpenWRT总结整理<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></div> <span id="footerPost" data-v-95d4b5b2></span></div> <div id="post-toc" class="post-toc el-col el-col-6" data-v-95d4b5b2><h4 class="catalog-title" data-v-95d4b5b2>TOC</h4> <div class="catalog-body" data-v-95d4b5b2><ul id="catalog-list" class="catalog-list" data-v-95d4b5b2></ul></div></div></div> <div class="post-nav el-row is-justify-space-around el-row--flex" data-v-95d4b5b2><div class="post-prev el-col el-col-7" data-v-95d4b5b2><div data-v-95d4b5b2><a href="/posts/%E5%AD%A6%E4%B9%A0nodejs%E7%AC%AC%E4%B8%80%E5%A4%A9.html" data-v-95d4b5b2><i class="el-icon-arrow-left" data-v-95d4b5b2></i> Prev
        </a> <p class="nav-title" data-v-95d4b5b2>学习nodejs第一天</p></div></div> <div class="post-next el-col el-col-7 el-col-lg-pull-5" data-v-95d4b5b2><div data-v-95d4b5b2><a href="/posts/ClassLoader%E8%AF%A6%E8%A7%A3.html" data-v-95d4b5b2>
          Next
          <i class="el-icon-arrow-right" data-v-95d4b5b2></i></a> <p class="nav-title" data-v-95d4b5b2>ClassLoader详解</p></div></div></div> <div class="el-row is-justify-center el-row--flex" data-v-95d4b5b2></div> <span data-v-d999c3f2 data-v-95d4b5b2><button type="button" class="el-button toc-btn el-button--primary is-circle" data-v-d999c3f2><!----><!----><span><i class="iconfont icon-service-directory" data-v-d999c3f2></i></span></button> <button type="button" class="el-button gotop-btn el-button--primary is-circle" data-v-d999c3f2><!----><!----><span><i class="el-icon-arrow-up" data-v-d999c3f2></i></span></button></span></div></main></section> <button type="button" class="el-button gotop-btn el-button--primary is-circle" style="display:none;" data-v-78a2dcfa data-v-80d5f2bc><!----><!----><span><i class="el-icon-arrow-up" data-v-78a2dcfa></i></span></button></section> <footer class="el-footer container-footer" style="height:60px;" data-v-76c50ee3 data-v-80d5f2bc><div class="footer-warp el-row is-justify-center is-align-center el-row--flex footerMargin" data-v-76c50ee3><div class="footer-top el-col el-col-24" data-v-76c50ee3><p class="ellipsis" data-v-76c50ee3><span data-v-76c50ee3>
          博客内容遵循
          <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" data-v-76c50ee3>知识共享 署名 - 非商业性 - 相同方式共享 4.0 国际协议</a></span></p></div> <div class="footer-bottom el-col el-col-24" data-v-76c50ee3><p class="ellipsis" data-v-76c50ee3><span data-v-76c50ee3><span data-v-76c50ee3>
            张志强的博客 © 2017-01 ~ 2021-03
          </span></span> <span data-v-76c50ee3>
          Power by
          <a href="https://vuepress.vuejs.org/zh/" target="_blank" data-v-76c50ee3>VuePress</a> Theme
          <a href="https://github.com/zhhlwd/vuepress-theme-indigo-material" target="_blank" data-v-76c50ee3>indigo material</a></span></p></div></div></footer> <div class="overlay" data-v-80d5f2bc></div></div><div class="global-ui"></div></div>
    <script src="/assets/js/app.3e01f5cb.js" defer></script><script src="/assets/js/1.21aaee9f.js" defer></script><script src="/assets/js/14.98a4de9c.js" defer></script><script src="/assets/js/5.352c1a43.js" defer></script><script src="/assets/js/7.4a8a313c.js" defer></script><script src="/assets/js/9.5ce2172b.js" defer></script><script src="/assets/js/6.8b8fad13.js" defer></script><script src="/assets/js/36.37013d97.js" defer></script><script src="/assets/js/13.186562af.js" defer></script><script src="/assets/js/15.740f4afc.js" defer></script>
  </body>
</html>
